package Moteur;

import Commande.Command;

public interface MoteurMetronome extends Observable{
	
	/**
	 * Retourne l etat du moteur
	 * @return Boolean 
	 */
	public Boolean getEtatMarche();
	
	/**
	 * Permet de set l etat du moteur
	 * @param Boolean etatMarche
	 */
	public void setEtatMarche(Boolean etatMarche);
	
	/**
	 * Permet de recupere l etat du tempo du moteur
	 * @return double tempo
	 */
	public double getTempo();
	
	/**
	 * Permet de set le tempo du moteur
	 * @param Integer : tempo
	 */
	public void setTempo(Integer tempo);
	
	/**
	 * Permet de recuperer le nombre de temps par mesure
	 * @return Integer : nombre de temps par mesure
	 */
	public Integer getNbTempsParMesure();
	
	/**
	 * Permet de definir le nombre de temps par mesure
	 * @param Integer tempsParMesure : nombre de temps par mesure
	 */
	public void setNbTempsParMesure(Integer tempsParMesure);
	
	/**
	 * Permet de definir la commande marquer temps
	 * @param Command commandeMarquerTemps
	 */
	public void setCmdMarquerTemps(Command commandeMarquerTemps);
	
	/**
	 * Permet de definir la commande marquer mesure
	 * @param Command commandeMarquerMesure
	 */
	public void setCmdMarquerMesure(Command commandeMarquerMesure);
	
	/**
	 * Permet de recuperer la commande marquer temps
	 * @return Command 
	 */
	public Command getCommandeMarquerTemps();
	

	/**
	 * Permet de recuperer la commande marquer mesure
	 * @return Command 
	 */
	public Command getCommandeMarquerMesure();
	
	/**
	 * Permet de diminuer le nombre de temps par mesure du moteur
	 */
	public void decrease();
	
	/**
	 * Permet d augmenter le nombre de temps par mesure du moteur
	 */
	public void increase();

}
